iT邦幫忙

2023 iThome 鐵人賽

DAY 10
0
Mobile Development

SwiftUI學習之旅系列 第 10

Day 10:關於 ViewBuilder(2)

  • 分享至 

  • xImage
  •  

昨天大概介紹了一下 ViewBuilder,今天來說一下 ViewBuilder 的一些限制。

ViewBuilder 的限制

上次提到 ViewBuilder 是一種 resultBuilder,那再點進去看一下 ViewBuilder 的宣告,可以看到裡面寫著 ViewBuilder 在什麼情況下該做什麼事,例如遇到 if 判斷,或是要組合兩個以上的 View。

那我們繼續往下滑,可以看到這裡組合多個 View 的方式是將多個 View 組合成一個叫做 TupleView 的 View,那可以看到這裡的最多只寫到將 10 個 View 組合的情況。

所以這裡就是 ViewBuilder 的一個限制:有支援 ViewBuilder 的 View,例如:Stack 系列,Group 等,這些 View 裡最多只能裝 10 個 View,多的它會無法處理。

那如果超過 10 個以上要怎麼辦,還記得上面提到的東西嗎?ViewBuilder 會將多個 View 組合成 “一個” 叫做 TupleView 的東西。

所以當你要裝下超過 10 個 View 的時候,可以先將 View 打包起來,這樣打包起來的就只會被當成一個 View。

當然,用來打包的 View,他的上限也是 10 個。

Lazy

那說完 ViewBuilder 的限制之後,來稍微說一下 Lazy 吧。

上面提到 ViewBuilder 最多可以裝下 10 個 View,但是最好不要在裡面塞太多的 View,就算你能夠用打包的方式避開 ViewBuilder 的限制,因為這樣可能會影響到效能。

像是 Stack 系列或是 Grid,它們都是會將所有的子 View 都顯示出來,不論你會不會用到這個 View,它都會預處理好。

所以當你真的要用到很多的 View,這裡可以使用這些 View 的 Lazy 版本。

Lazy 版本的 View 跟一般 View 的差別在於,Lazy 版本只會在使用者有滑到那個畫面時才會出現,這樣就能避免影響到效能,只是在使用 Lazy 版本的時候,要注意排版設定,因為 Lazy 版本沒辦法取得子 View 的大小,與一般的 View 不太一樣,要特別注意。

那今天就介紹到這裡,明天來說一下 Property Wrapper 吧。


上一篇
Day 9:關於 ViewBuilder(1)
下一篇
Day 11:關於資料類型
系列文
SwiftUI學習之旅30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言